
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>请解释一下Git是什么？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>请解释一下Git是什么？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Git是什么？它与传统的版本控制系统（如SVN）在架构上的主要区别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Git是一个分布式版本控制系统（DVCS）。其主要区别在于采用了分布式架构，每个开发者的工作目录都是一个包含项目完整历史和版本信息的完整仓库，而传统系统通常依赖一个单一的中央服务器。</div>
          </div>
          <div class="card-source">来源: Git是什么？, Git的核心概念 - 版本控制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Git在存储文件变更时采用什么策略？这种策略与传统版本控制系统有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Git采用拍摄文件快照（snapshots）的策略来存储变更。每次提交都会记录文件的完整快照，如果文件未改变，则只引用之前的文件快照。这与传统版本控制系统存储文件变化的差异（deltas）的方式不同。</div>
          </div>
          <div class="card-source">来源: Git的核心概念 - 快照而非差异</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Git是如何保证数据完整性的？它使用了什么核心技术？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Git通过使用SHA-1哈希算法来确保数据完整性。系统中的每个对象（如文件、提交、分支）都通过其SHA-1哈希值进行标识，任何数据的改变都会导致哈希值的变化，从而可以有效防止数据被篡改。</div>
          </div>
          <div class="card-source">来源: Git的核心概念 - 数据完整性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">请描述Git工作流程中的三个核心区域，并说明它们之间的关系。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Git的工作流程包含三个核心区域：1. 工作目录（Working Directory）：开发者实际编辑文件的地方。2. 暂存区（Staging Area）：一个索引文件，用于存放即将提交的文件快照信息。3. 本地仓库（Local Repository）：永久保存项目历史版本的地方。开发者在工作目录修改文件，使用 `git add` 将修改放入暂存区，再使用 `git commit` 将暂存区的快照永久保存到本地仓库。</div>
          </div>
          <div class="card-source">来源: Git的工作机制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">为什么说Git的分支模型非常轻量和强大？分支在开发中通常用于什么目的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Git的分支模型非常轻量和强大，因为它允许开发者快速地创建和合并分支。分支是独立的开发线，通常用于开发新功能、修复bug或进行实验，而不会影响主代码库的稳定性。</div>
          </div>
          <div class="card-source">来源: Git的核心概念 - 分支和合并的灵活性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在Git中，`git add` 和 `git commit` 这两个命令分别起什么作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`git add` 命令用于将工作目录中文件的修改内容添加到暂存区（Staging Area），为下一次提交做准备。`git commit` 命令则将暂存区中的所有更改作为一个快照，永久性地保存到本地仓库中。</div>
          </div>
          <div class="card-source">来源: Git的工作机制 - 暂存区, Git的工作机制 - 本地仓库</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Git的分布式架构如何提高了系统的容错性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">由于每个开发者都拥有项目的一个完整副本（完整的代码库），即使远程中央服务器发生故障或宕机，开发者仍然可以在本地执行绝大部分版本控制操作（如提交、查看历史、创建分支），这极大地提高了系统的容错性。</div>
          </div>
          <div class="card-source">来源: Git的优势 - 分布式架构提高容错性, Git的核心概念 - 分布式系统</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">当需要与团队成员协作时，如何使用Git将本地的修改分享给他人，以及如何获取他人的最新修改？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">可以使用 `git push` 命令将本地仓库的更改推送到远程仓库，从而分享给他人。使用 `git pull` 或 `git fetch` 命令可以从远程仓库拉取最新的更改到本地仓库。</div>
          </div>
          <div class="card-source">来源: Git的工作机制 - 远程仓库</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">除了分布式架构外，文档中还提到了Git的哪些主要优势？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提到的Git主要优势包括：1. 高效的分支管理能力，支持并行开发；2. 通过SHA-1校验保障强大的代码完整性；3. 广泛的社区支持、丰富的扩展工具和GUI工具，使其使用更便捷。</div>
          </div>
          <div class="card-source">来源: Git的优势</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
